package com.meringer.beans.ejb;

import java.util.ArrayList;
import java.util.List;

import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import com.meringer.entities.Role;
import com.meringer.entities.User;
import com.meringer.utils.MeringerUtils;

/**
 * Session Bean implementation class UserUtil
 */
@Stateless
@LocalBean
public class RegisterEJB {

	@PersistenceContext
	private EntityManager em;
    /**
     * Default constructor. 
     */
    public RegisterEJB() {
        // TODO Auto-generated constructor stub
    }
    
    public boolean addUser(String username, String realname, String password, Integer age){
    	User existUser = em.find(User.class, username);
    	System.out.println("exist user " + existUser);
    	if(existUser != null){
    		return true;
    	}
    	User addUser = new User();
		addUser.setUsername(username);
		addUser.setRealName(realname);
		addUser.setAge(age);
		addUser.setExperience(0);
		addUser.setBudget(100);
		addUser.setPassword(MeringerUtils.sha256(password));
		addUser.setIsActive(true);
		Role userRole = em.find(Role.class, "IS_PLAIN_USER");
	    List<Role> roles = new ArrayList<Role>();
	    roles.add(userRole);
	    addUser.setRoles(roles);
		em.persist(addUser);
		return false;
//		try {
//			utx.begin();
//		} catch (NotSupportedException e1) {
//			// TODO Auto-generated catch block
//			e1.printStackTrace();
//		} catch (SystemException e1) {
//			// TODO Auto-generated catch block
//			e1.printStackTrace();
//		}
//		try {
//			utx.commit();
//		} catch (SecurityException e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		} catch (IllegalStateException e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		} catch (RollbackException e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		} catch (HeuristicMixedException e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		} catch (HeuristicRollbackException e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		} catch (SystemException e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		}
    }

}
